Copyright © 2021 ARC, All rights reserved

1. Yield Curve Building using Swaps

Mathematical symbols used in this notebook

Symbol Comment
tr Time to maturity
t Time to maturity (interpolated)
yr Yield to maturity
y Yield to maturity (interpolated)
s Bootstrapped spot rate

We're going to construct in detail a zero-coupon yield curve, called zero curve as well, with swaps by using bootstrapping method.

3. Bootstrapping of spot rates

The long end of the swap curve out to ten years is derived directly from observable coupon swap rates. These are plain vanilla interest rate swaps with fixed rates exchanged for floating interest rates. The fixed swap rates are quoted as par rates and are usually compounded semi-annually. The swap rates observed at the long end of the curve are for the 5Y, 7Y, and 10Y tenors. We therefore have to fill in the swap rates for tenors that we do not have and also the rates at the semi-annual terms. This is done by simple linear interpolation or by cubic spline interpolation if preferred. As we progress recursively along the long end of the swap curve interpolating the swap rates to be filled in, at the same time we apply the bootstrap method to derive zero-coupon interest rates from the swap par rates. Starting from the first swap rate, given all the continuously compounded zero rates for the coupon cash flows prior to maturity, the continuously compounded zero rate for the term of the swap is bootstrapped as follows:

\begin{equation}zero\_rate\left (T \right) = -\frac{log\left(\frac{\left(100 - \sum_{i=m}^{T-m}\left(c/m \times e^{-r_i \times t_i}\right)\right)}{\left( 100 + c/m\right)}\right)}{T}\end{equation}

where:

$zero\_rate(T)$: the bootstrapped continuously compounded zero rate for time T

$m$: the swap payment frequency per annum expressed in the day count convention of that Swap, semi-annual in our examples

$c$: the coupon per annum, which is equal to the observed swap rate times the swap notional. The coupon payment is therefore $c/m$

$r_i$: represents the continuously compounded zero rate for time $t_i$

Let's note that all our computations on float numbers will be done with 6 decimal points precision.

3.1. Zero-coupon calculation for the 1 year maturity

The first swap, with 1 year maturity and semi-annual interest payment frequency, has two fixed coupons paying a 0.3467% rate: one at 6M and the one at its maturity (1Y). First let's compute the related maturity dates by using the TARGET calendar (Trans-European Automated Real-time Gross settlement Express Transfer). See ECB LINK for details.

As we mentioned above the trade date is

As we know the settlement day of a Swap is 2, so the settlement date is obtained by adding 2 days to the above trade date:

Because the weekday is Saturday and the business date convention for the Swap is by default Following, so by applying the TARGER calendar, the settlement date is

Finally, the related maturity dates for 6M and 1Y are obtained by adding 6M adn 1Y to the above settlement date:

To sum up, that Swap has two fixed coupons paying a 0.3467% rate: one starting from May 10th 2021 and ending at November 10th 2021, and the other starting from November 10th 2021 and ending at May 10th 2022.

Let's compute the related swap coupons at 6M and 1Y (in the other words, we want to compute the rapport $c/m$ of the equation (1))

For the first coupon starting from May 10th 2021 and ending at November 10th 2021; it last 184 days, and since the swap specifies Actual/360 convetnion, so the accrual time will be 184/360

So the coupon at 6M will be the multiplication of the rate 0.3467% by the above accrual time:

For the second coupon starting from November 10th 2021 and ending at May 10th 2022; it last 181 days, and since the swap specifies Actual/360 convetnion, so the accrual time will be 181/360

So the coupon at 1Y will be the multiplication of the rate 0.3467% by the above accrual time:

The last variable ramaining to compute in the equation (1) is the accrual time $T$ between the settlement date (May 10th 2021) and the maturity date (May 10th 2022); It last 365 days, since the applied convention is Actual/360, so $T$ will be 365/360

Righ now, it's easy to get the zero-coupon from the equation (1) by replacing each variable by its value:

$$ zero\_rate(1Y) = \frac{-log\left (\frac{1 - 0.001772 * exp(-0.003467*0.5111)}{1 + 0.001743} \right)}{1.01388} $$

3.2 Zero-coupon calculation for the 1 year and 6 months maturity

The second swap, with 1 year and 6 motns maturity and semi-annual interest payment frequency, has three fixed coupons paying a 0.3525% rate: one at 6M, the one at 1Y and the last one at its maturity (1Y6M). First let's compute the related maturity dates by using the TARGET calendar.

We've already computed the related dates to the maturities 6M and 1Y in the paragraph 3.1 and we've obtained 2022-05-10 and 2022-05-10 respectively. The maturity date related to the maturity 1Y6M will be computed in the same way by adding 1Y6M to the aboove settlement date and wiil be

To sum up, this Swap has three fixed coupons paying a 0.3525% rate: one starting from May 10th 2021 and ending at November 10th 2021, and the second starting from November 10th 2021 and ending at May 10th 2022, and the last one starting from May 10th 2022 and ending at November 11th 2022.

Let's compute the realted swap coupons at 6M , 1Y and 1Y6M (in the other words, we want to compute the rapport $c/m$ of the equation (1)). To do that, we will proceed as in the paragraph 3.1 and the coupons will be 0.3525%184/360, 0.3525%181/360 and 0.3525%*184/360; So the coupons are respectively:

Righ now, we compute the accrual time $T$ between the settlement date (May 10th 2021) and the maturity date (Novembre 11th 2022); It last 549 days, since the applied convention is Actual/360, so $T$ will be 549/360

Finally, we compute the zero-coupon from the equation (1) by replacing each variable by its value:

$$ zero\_rate(1Y) = \frac{-log\left (\frac{1 - 0.001801 * exp(-0.003467*0.5111) - 0.001772 * exp(-0.003463*1.01388)}{1 + 0.001801} \right)}{1.525} $$

3.3 Zero-coupon calculation for the 2 years maturity

The third swap, with 2 years maturity and semi-annual interest payment frequency, has four fixed coupons paying a 0.3641% rate: the first at 6M, the second at 1Y, the third at 1Y6M and the last one at its maturity (2Y). As in the previous computations, the related maturity dates will be:

As in the previous computations done in the previous paragraphs, the swaps coupons will be respectively

Righ now, we compute the different accrual times $t\_6m$, $t\_1y$, $t\_1y6m$, $T$ of the equation (1) by applying the specified Actual/360 convention.

The $t\_6m$, $t\_1y$, $t\_1y6m$ are already computed in the last paragraghs and their values are respectively 0.5111111111111111, 1.0138888888888888 and 1.525. The only accrual time time to compte is T between the settlement date(May 10th 2021) and the maturity date (May 1Oth 2023); It last 549 days, so 𝑇 will be 730/360

Finally, we compute the zero-coupon from the equation (1) by replacing each variable by its value:

3.4 Zero-coupon calculation for the 3 years maturity

The fourth swap, with 3 years maturity and semi-annual interest payment frequency, has six fixed coupons paying a 0.3797% rate: the first at 6M, the second at 1Y, the third at 1Y6M, the fourth at 2Y, the fifth at 2Y6M and the last one at its maturity (3Y). As in the previous computations, the related maturity dates will be:

As in the previous computations done in the previous paragraphs, the swaps coupons will be respectively

Righ now, we compute the different accrual times $t\_6m$, $t\_1y$, $t\_1y6m$, $t\_2y$,$t\_2y6m$, $T$ of the equation (1) by applying the specified Actual/360 convention.

The $t\_6m$, $t\_1y$, $t\_1y6m$, $t\_2y$ are already computed in the last paragraghs and their values are respectively 0.5111111111111111, 1.0138888888888888, 1.525 and 2.0277777777777777. The only accrual times to compte are t_2y6m and T between the settlement date(May 10th 2021) and the maturity date (May 1Oth 2023); It last 549 days, so 𝑇 will be 730/360

The only accrual time t_2y6m, between the settlement date(May 10th 2021) and the maturity date (Nov 1Oth 2023), last 914 days, so t_2y6m will be 914/360

The only accrual time T, between the settlement date(May 10th 2021) and the maturity date (May 1Oth 2024), last 1096 days, so T will be 1096/360

Finally, we compute the zero-coupon from the equation (1) by replacing each variable by its value; Let's note that the zero coupon for the maturity 2y6m will be suppose equal to the zero coupon for the maturity 2y.

3.5 Zero-coupon calculation for the 4 years maturity

The fifth swap, with 4 years maturity and semi-annual interest payment frequency, has eight fixed coupons paying a 0.4967% rate: the first at 6M, the second at 1Y, the third at 1Y6M, the fourth at 2Y, the fifth at 2Y6M, the sixth at 3Y, the seventh at 3Y6M and the last one at its maturity (4Y). As in the previous computations, the related maturity dates will be:

As we ca notice, the weekday of the previous date is Sunday, so we should use the TARGET calendar and applying the Following business rule such as this maturity date will be

Again, the weekday of the previous date is Sunday, so we should use the TARGET calendar and applying the Following business rule such as this maturity date will be

As in the previous computations done in the previous paragraphs, the swaps coupons will be respectively

Righ now, we compute the different accrual times $t\_6m$, $t\_1y$, $t\_1y6m$, $t\_2y$,$t\_2y6m$, $t\_3y$, $t\_3y6m$, $T$ of the equation (1) by applying the specified Actual/360 convention.

The $t\_6m$, $t\_1y$, $t\_1y6m$, $t\_2y$, $t\_2y6m$, $t\_3y$ are already computed in the last paragraghs. The only accrual times to compte are $t\_3y6m$ and T between the settlement date(May 10th 2021) and the maturity date (May 1Oth 2023); It last 549 days, so 𝑇 will be 730/360

The accrual time t_3y6m, between the settlement date(May 10th 2021) and the maturity date (Nov 11th 2024), last 914 days, so t_2y6m will be 1281/360

The accrual time T, between the settlement date(May 10th 2021) and the maturity date (May 12th 2025), last 1096 days, so T will be 1463/360

Finally, we compute the zero-coupon from the equation (1) by replacing each variable by its value; Let's note that the zero coupon for the maturity 3y6m will be suppose equal to the zero coupon for the maturity 3y.

3.6 Zero-coupon calculation for the other maturities from 5Y to 10Y

The zero-coupons computation for the rest of the other maturities will be done by using exactly the same reasoning as previously. We will get the above values. As previously think to adjust each computed maturity date to a business day if needed.

4. Wrap up

let's sum up in the following table the computed zero-coupons by maturity with 30/360 day count convention and Continuous compounding.

Here is the final table

5. The zero curve constructed